A Database Coprocessor for Haskell
نویسندگان
چکیده
Relational database management systems (RDBMSs) provide the best understood and most carefully engineered query processing infrastructure available today. However, RDBMSs are often operated as plain stores that do little more than reproduce stored data items for further processing outside the database host, in the general-purpose programming language heap. One reason for this is that the aforementioned query processing capabilities require mastering of advanced features of query languages (e.g., SQL) in addition to the general-purpose language the application is programmed in. Moreover, the query languages are often inadequately integrated into the host programming language. One way to solve these problems is to use RDBMSs as a coprocessor for general-purpose programming languages, for those program parts that carry out data-intensive and data-parallel computations. In this paper we present a library for database-supported program execution in Haskell. Data-intensive and data-parallel computations are expressed using familiar combinators from the standard list prelude and expressive list comprehension notation. The library, in addition to queries of basic types, supports computations over arbitrarily nested tuples and lists. The implementation minimises unnecessary data transfer and context switching between the database coprocessor and the programming language run-time by ensuring that the least possible number of queries is generated when executing the library functions. Although Haskell has inspired a number of language-integrated query facilities (most notably LINQ in Microsoft’s .NET framework), as far as we know this is the first proposal and implementation of database-supported program execution facility for Haskell.
منابع مشابه
Haskell Boards the Ferry - Database-Supported Program Execution for Haskell
Relational database management systems can be used as a coprocessor for general-purpose programming languages, especially for those program fragments that carry out data-intensive and data-parallel computations. In this paper we present a Haskell library for databasesupported program execution. Data-intensive and data-parallel computations are expressed using familiar combinators from the stand...
متن کاملHeisenBase: Understanding Database Performance in Haskell
This work aims to develop a performant relational database management system, HeisenBase, in the functional programming language Haskell. Much work has been published with the intent to create sensible interaction layers between the Haskell programming language and existing database software. We build the DBMS itself in Haskell in order to understand the benefits and drawbacks of a Haskell-base...
متن کاملHitchhiker ’ s Guide to GUM
This report documents the process of extending the GUM run-time system (RTS) for Glasgow parallel Haskell (GpH). First, we obtain the sources, set up the environment and build the Glasgow Haskell Compiler (GHC) and GUM RTS. Next, GpH and Evaluation Strategies are briefly introduced, followed by a short discussion of parallelisation, profiling and optimisation. Subsequently, we illustrate how to...
متن کاملScripting XML with Generic Haskell
A generic program is written once and works on values of many data types. Generic Haskell is a recent extension of the functional programming language Haskell that supports generic programming. This paper discusses how Generic Haskell can be used to implement XML tools whose behaviour depends on the DTD or Schema of the input XML document. Example tools include XML editors, databases, and compr...
متن کاملHiDb: A Haskell In-Memory Relational Database
We describe our experience implementing an in-memory relational database in Haskell that supports the standard CRUD (create, read, update, delete) operations while providing the requisite ACID (atomicity, consistency, isolation, durability) guarantees. We rely on Haskell’s STM module to provide atomicity and isolation. We use a combination of STM, Haskell’s type system, and dynamic type-checkin...
متن کامل